home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / data / dora / doramain.plt < prev    next >
Text File  |  1993-11-30  |  19KB  |  625 lines

  1. /*******************************************************************
  2. *   RT-BBS NET専用MOPTERMオートパイロットDORAV1.04a               *
  3. *   All Right Reserved, Copyright(c) モップ               *
  4. *            (Masahiro Kezuka   NIFTY-ID PFF00570)      *
  5. *   All Right Reserved, Copyright(c) Yama-chan    1992          *
  6. *            (Hiroaki Yamada       NIFTY-ID PEE01244       *
  7. *   All Right Reserved, Copyright(c) DORAGON    1992               *
  8. *                       (Kouji Koumura     NIFTY-ID GBH00541       *
  9. *                                          TGK-NET  TGK0013        *
  10. *                                          ITY-NET  ITYT0023       *
  11. *   All Right Reserved, Copyright(c) Take       1993               *
  12. *                       (Masamiti Takemoto NIFTY-ID GHA00253       *
  13. *                                          ITY-NET  ITYT0001       *
  14. ********************************************************************/
  15. /*    DORAのV/L    */
  16. %VerLev{1.04a};%VL    {104a};
  17. /*    DEBUG MODE    */
  18. %DEBUG    {No};
  19. /*******************************************************************
  20. *  RTBBS-NET専用MOPTERMオートパイロットDORAMAIN.PLT(メイン処理 )   *
  21. ********************************************************************
  22. 動作確認●・ FMTOWNS2(初代型),(6MB増設),外付けH/D
  23.        OMRON MD24FS5 & MD96FB5V
  24.       ・  FMTOWNS20F,内付けH/D、クロスケーブル接続
  25.           OMRON MD24FP5
  26.      ・ FMTOWNS2F    ,(6MB増設),外付けH/D
  27.        MICROCORE MC24PA5
  28.      ・ FMTOWNSCX20  ,(8MB増設),外付けH/D
  29.        PM2400F2(富士通)
  30.      システムソフトV2.1L20, MOPTERM V2.03b
  31.  
  32. 対応確認済HOSTシステム
  33.  ・The resource版 Turbo-BBS  ver5.3βa
  34.  ・The resource版 Turbo-BBS  ver5.3βb FINAL
  35.   ・The resource edition Turbo-BBS  ver5.3βb FINAL! ITY-Net 版
  36.  ・KMF Independent Forum System Based RTBBS  Ver.0.14
  37.  ・Joyful Communication Network System ("The resource版 Turbo-BBS"改造)
  38.   ・The resouce版 turbo-BBS" を改編した "なっとぉ版 Turbo-BBS
  39.   ・K.F.C.版 RT-BBS  ver5.3βb+.02 FINAL!
  40.  
  41. * 定数・変数領域の指定 */
  42. /*    ID & PASSWORD    */
  43. var ID    [8];
  44. var PassWord[8];
  45. /*    アクセスユ-ザ-確認後アクセス中ならばトークする会員ID */
  46. var TalkID1[20];var TalkID2[20];var TalkID3[20];var TalkID4[20];
  47. var TalkID5[20];var TalkID6[20];var TalkID7[20];var TalkID8[20];
  48. var TalkID9[20];var TalkID10[20];var TalkID11[20];var TalkID12[20];
  49. var TalkID13[20];var TalkID14[20];var TalkID15[20];var TalkID16[20];
  50. var TalkID17[20];var TalkID18[20];var TalkID19[20];var TalkID20[20];
  51. var CMt1[50];var CMt2[50];var CMt3[50];var CMt4[50];var CMt5[50];
  52. var CMt6[50];var CMt7[50];var CMt8[50];var CMt9[50];var CMt10[50];
  53. var CMt11[50];var CMt12[50];var CMt13[50];var CMt14[50];var CMt15[50];
  54. var CMt16[50];var CMt17[50];var CMt18[50];var CMt19[50];var CMt20[50];
  55.  
  56. var WhoRes[1200];
  57. /*    電話番号    */
  58. var ROAD [80];
  59. var ROAD2[80];
  60. var ROAD3[80];
  61. var ROAD4[80];
  62. var sROAD[80];    /* 接続電話番号    */
  63.  
  64. var GEN [3];
  65. var GEN2[3];
  66. var GEN3[3];
  67. var GEN4[3];
  68. /*モデムコマンド及びダイアルタイプ    */
  69. var    MODEM    [60];
  70. var    DIAL    [1];
  71. /* ディレクトリ    */
  72. var    TEMP    [64];
  73. var    LOG    [128];
  74. var    UP    [64];
  75. var    SOUND    [64];
  76. var    TEMP2    [64];
  77. var    LOG2    [64];
  78. var    SOUND2    [64];
  79. var    UP2    [64];
  80. var    FSW    [64];
  81. var    RTTLdir    [64];
  82. var    RTTL2    [64];
  83. var    VIEWLOG    [64];
  84.  
  85. /*    ファイルパス名    */
  86. var    RTTLC    [64];
  87. var    MEMBER    [64];
  88. /*    ログファイル作成モード    */
  89. var    LOGmode    [8];
  90. /*    NETの名称   */
  91. var    NET    [6];
  92. var    NETname    [40];
  93. /*    みかか代計算データ   */
  94. var    AcP    [12];
  95. var    AcPNo    [1];
  96. /*    テレジョーズの使用    */
  97. var    TELJ    [3];
  98. TELJ:={/J};    /*デフォルトはテレジョーズモードです、「TELJ:={}」にて通常モード指定可。*/
  99. /*○○○-NETにおける処理    */
  100. var    TGK    [1536];
  101. /*    画面背景色    */
  102. var    R    [3];
  103. var    G    [3];
  104. var    B    [3];
  105. /* オプションスイッチ */
  106. var    BELFIL    [64];
  107. var    VBELL    [3];
  108. var    NATTOU    [3];
  109. var    CLICK    [3];
  110. var    TAB    [2];
  111. var    LOCK    [3];
  112. var    OAK    [5];
  113. var    HOSEI    [3];
  114. /* 保存ファイルの圧縮指定 */
  115. var COMPRESS[3];var ARCHIVER[64];
  116. /* 設定ファイルのパス名 */
  117. var    SETFILE    [64];
  118. var    TGKFILE    [64];
  119. var    SETFILE1[64];
  120. var    SETFILE2[64];
  121. /* オンライン処理フラグ */
  122. var    DORTBBS    [3];
  123.  
  124. var    MAILDEL    [3];
  125. var    MAILRED    [3];
  126.  
  127. var    PLTmemo    [3];    /* 「w」メモフラグ    */
  128. var    REDIAL    [4];
  129. var    START    [3];
  130. var    AP3    [3];
  131. var    WHO    [5];
  132. var    mPOINT    [8];
  133. var    LGLOOK    [3];
  134. var    MACTIV    [8];
  135. var    BDLIST    [3];
  136. var    DLLIST    [3];
  137. var    FREE1    [3];
  138. var    JISAR    [3];
  139. var    ESCon    [3];
  140.  
  141. /*    各種設定フラグ    */
  142. var    OPENING    [3];    /*    オープニング画面表示    */
  143. var    DORAEND    [8];    /*    自動通信終了時処理    */
  144. var    UPDOWN    [5];
  145. var    FMGR    [64];    /*    ファイルマネージャパイロットファイル名    */
  146. var    allPRO    [3];
  147. var    genteiT    [3];    /* アクセス時間限定フラグ    */
  148.  
  149. /*    変数の定義    */
  150. var     sROAD    [80];    /* チャンネル変更    */
  151. var    openT    [2];    /* RT-BBS開局時間    */
  152. var    closeT    [2];    /* RT-BBS閉局時間    */
  153. var    AM3    [6];    /* ログイン時フラグ    */
  154. var    ACCESS    [5];    /* 通信開始時刻    [HH:MM]    */
  155. var    liblist    [40];    /* ライブラリ番号リスト    */
  156. var    IDlist    [80];    /* 爆裂トークIDリスト    */
  157. var    Btitle    [3];    /* タイトルから読みたいボードのログを指定    */
  158.  
  159. /* ウェイト時間の設定 */
  160. %Wtime1    10;        /* モデム応答待ち時間        */
  161. %Wtime2    60;%Wtime3 90;%Wtime5 180;    /* RTBBS-NETプロンプト待ち時間    */
  162. %Wtime4    60;        /* select入力待ち時間        */
  163. %WtimeD    3600;        /* ダウンロード終了待ち時間の限定    */
  164. var    BELL    [1];    /*    ベルコード    */
  165. /*    復帰改行コード    */
  166. %CRLF    @xc({0d})|@xc({0a});
  167. /************************************************************************
  168. *    共通処理モジュール                        *
  169. ************************************************************************/
  170. /* 音声メッセージ出力処理 */
  171. %SNDMSG    {[file]
  172.     case    (SOUND2={}||SOUND2={\},
  173.         {No},{case(@filechk(SOUND2|file),
  174.             {Yes},{snd(SOUND2|file)},
  175.             {No}, {display(BELL)})},
  176.         {Yes},{display(BELL)})};
  177. %PLTSTOP{SNDMSG({owata_f.snd});
  178.     display({\nオートパイロットDORA}|VerLev|{を停止しました\n});
  179.     stop};
  180. %AUTOEND{footnote({オートパイロットの終了処理をしています});
  181.     display(NET|{-NETとの通信を終了しました\n});
  182.     SNDMSG({owata_f.snd});
  183.     wait(2)};
  184. /* パラメタで指定されたディレクトリへ移動する(「A:\」と「A:」の両方が可能) */
  185. %setcdir2{[dir]
  186.     setcdir(@case(@nochar(dir),2,{im(dir|{\})},,{im(dir)}));
  187.     };
  188. /* 指定されたディレクトリー配下に,第2パラメターで指定されたディレクトリを
  189.      (もし,無ければ)作成する。 */
  190. %mkdir    {[dir,name]
  191.     dispoff(!DEBUG);
  192.     case    (@setcdir2(dir),
  193.         {Yes},
  194.         {command({mkdir }|name)},
  195.         {No},
  196.         {
  197.         select({装置(}|dir|{)が使えませんが?},
  198.             Wtime4,{},
  199.             {    もう一回やってみる    },{mkdir(dir,name)},
  200.             {     自動処理をやめる    },{stop},
  201.             {  無視して先の処理をやる },{}
  202.             );
  203.         });
  204.     dispoff({No})
  205.     };
  206. /* 指定されたディレクトリーを(もし,無ければ)作成する。 */
  207. %mkdir2    {[dir]
  208.     case    (@setcdir2(dir),
  209.         {No},
  210.         {
  211.         case    (@nochar(dir)==2,
  212.             {Yes},
  213.             {
  214.             display({装置(}|dir|{)が使えません\n});
  215.             SNDMSG({okasi_f.snd});
  216.             }, 
  217.             {No},
  218.             {
  219.             mkdir2(@body(dir,,{\}));
  220.             mkdir(@body(dir,,{\}),@tail(dir,{\}));
  221.             });
  222.         });
  223.     };
  224. /*    ディレクトリの最終に『\』を付加する    */
  225. %dir2    {
  226.     [dir]
  227.     case    (@nochar(dir)==3,
  228.         {No},{im(dir|{\})},{Yes},{im(dir)}
  229.         );
  230.     };
  231. /*    指定ディレクトリのサブディレクトリ名を返す    */
  232. %subdir    {
  233.     [dir,sdir]
  234.     case    (@nochar(dir)==3,
  235.         {Yes},{im(dir|sdir)},
  236.         {No},{im(dir|{\}|sdir)}
  237.         );
  238.     };
  239. /*    n番目の部分文字列をとりだす関数    */
  240. %nth    {[str,n,sep]    /* 元の文字列,順番,区切り文字列 */
  241.     var a[256];var m[3]; a:=str;m:=0;
  242.     case    (n<1,
  243.         {Yes},{im({})},
  244.         {No},
  245.         {loop    ({m:=m+1;
  246.             case    (m==n||a={},{Yes},{im({No})},
  247.                 {No},{a:=@body(a,sep);im({Yes})});
  248.             });
  249.          im(@head(a,sep))})};
  250. /*    指定されたSIGボードのパスワードを変数TGKから検索する    */
  251. %SCANPW{    [mescan]
  252.     var n[3];var sigNo1[3];var mescan1[3];var sigPass[8];
  253.     %mkPASS    {[sigNo,Spass]
  254.         case    (@nochar(sigNo)=3,
  255.             {No},{sigNo1:={0}|sigNo},
  256.             {Yes},{sigNo1:=sigNo}
  257.             );
  258.         case    (@nochar(mescan)=3,
  259.             {No},{mescan1:={0}|mescan},
  260.             {Yes},{mescan1:=mescan}
  261.             );
  262.         case    (sigNo1=mescan1,
  263.             {Yes},{sigPass:=Spass;im({No})},
  264.             {No},{sigPass:=NET;im({Yes})}
  265.             );
  266.         };
  267.     %ckPASS{
  268.     loop    ({    n:=n+1;
  269.         %a    @getline(TGK,n,1);
  270.         case    (a={},    
  271.             {Yes},{im({No})},,
  272.             {case    (@nth(a,1,{/})={SIGボード},
  273.                 {Yes},
  274.                 {mkPASS(@nth(a,4,{/}),@nth(a,5,{/}));},
  275.                 {No},{im({Yes})}
  276.                 )
  277.             });
  278.         });
  279.     };
  280.     case(mescan={},
  281.         {Yes},{im({})},,
  282.         {    case(@body(TGK,{SIGボード},{\n})={},
  283.             {Yes},{im(NET)},
  284.             {No},{ckPASS;im(sigPass)})
  285.         });
  286.     };
  287. /*    現在の日付・時刻を得る 「yyyy-mm-dd (曜) hh:mm:ss」    */
  288. %getdt    {%dt    @daylong;%week    @case    (@getchar(dt,12,3),
  289.             {Sun},{im({日})},{Mon},{im({月})},
  290.             {Tue},{im({火})},{Wed},{im({水})},
  291.             {Thu},{im({木})},{Fri},{im({金})},
  292.             {Sat},{im({土})},,{im({  })});
  293.     im(@getchar(dt,1,4)|{-}|@getchar(dt,6,2)|{-}|@getchar(dt,9,2)|
  294.         { (}|week|{) }|@getchar(dt,16,8));
  295.     };
  296. /*    指定されたファイルをリネームして同一のディレクトリにコピーする */
  297. %renname{
  298.     [OLDFILE,NEWFILE]
  299.     copyfile(OLDFILE,@body(OLDFILE,,{\})|{\}|NEWFILE);delfile(OLDFILE);
  300.     };
  301. /*    指定されたディレクトリに yymmddnn.* というファイルを作成する */
  302. %crefile{[path,sfx]
  303.     var n[2];var file1[12];
  304.     %d @getdt;%date @getchar(d,3,2)|@getchar(d,6,2)|@getchar(d,9,2);
  305.     mkdir2(path);setcdir2(path);
  306.     n:=-1;
  307.     loop    ({    n:=n+1;
  308.         case    (@nochar(n)=1,{Yes},{n:={0}|n});
  309.         case    (sfx={},
  310.             {Yes},{file1:=date|n},{No}, {file1:=date|n|{.}|sfx});
  311.         case    (@filechk(file1)={No}||n==99,
  312.             {Yes},{im({No})},{No}, {im({Yes})});
  313.         });
  314.     im(file1)};
  315. /*    全てのメモをクローズする    */
  316. %CloseAllMemo{    case(@mlast!=0 && @mcheck==0,{Yes},{mopen(@mlast)});
  317.         case(@mcheck!=0,{Yes},{loop({mclose(2);im(@mcheck!=0)})})
  318.     };
  319. /*    全てのメモを非編集状態にする    */
  320. %InactMemo{
  321.     case(@mcheck!=0,{Yes},{mclose(1)});
  322.     };
  323. /*    ファイル名にワイルドカード(*,?)が含まれるかチェックする    */
  324. %wild    {[file1]
  325.     case    (@nochar(file1)==0,
  326.         {Yes},
  327.         {im({No})},
  328.         {No},{
  329.         case    (@getchar(file1,1,1),
  330.             {*},{im({Yes})},
  331.             {?},{im({Yes})},
  332.             ,{im(@wild(@getchar(file1,2)))}
  333.             );
  334.         });
  335.     };
  336. /*    電話料金計算    */
  337. %RYOUKIN{
  338.     %cdir    @getcdir;
  339.     %memono    @mlast+1;
  340.     %picknt{footnote(NET|{ネットの電話料金を計算中です});
  341.         CloseAllMemo;setcdir(CDIR2);
  342.         mwrite(TEMP2|{_connect.dat},memono);
  343.         case    (@filechk(CDIR2|{denwadai.exe}),
  344.             {Yes},
  345.             {dispoff(!DEBUG);
  346.             command({denwadai.exe }|AcPNo|{ }
  347.             |TEMP2|{_connect.dat }|TEMP2|{_ryoukin.new }|TELJ);
  348.             dispoff({No});
  349.             case    (@filechk(TEMP2|{_ryoukin.new}),
  350.                 {Yes},{mclear(memono);
  351.                 mread(TEMP2|{_ryoukin.new},memono);
  352.                 mopen(memono,0,21,639,459,{w});
  353.                 },
  354.                 {No},{display({みかか代計算に失敗しました\n});
  355.                 wait(2);mopen(memono,0,21,639,459,{w});mclose(1)
  356.                 });
  357.             },
  358.             {No},{display({denwadai.exeが存在しません})});
  359.         };
  360.     %savememo    {CloseAllMemo;
  361.             mwrite(LOG2|{アクセスdat\ryoukin.dat},memono)
  362.             };
  363.     case    (@mlast==9,
  364.         {Yes},
  365.         {footnote({メモ番号が一杯のため、新しいメモを開けません});
  366.         wait(2);},
  367.         {No},
  368.         {CloseAllMemo;madd(memono,{\n});mclear(memono);
  369.         case    (@filechk(LOG2|{アクセスdat\CONNECT.DAT}),
  370.             {Yes},
  371.             {mread(LOG2|{アクセスdat\CONNECT.DAT},memono)},
  372.             {No},{display({みかか代計算の前には、現在選択した}|
  373.                 {ネットにアクセスする事が必要です\n})
  374.             }); 
  375.         dispoff(!DEBUG);
  376.         command({del }|TEMP2|{_connect.dat});
  377.         command({del }|TEMP2|{_ryoukin.new});
  378.         dispoff({No});
  379.         mopen(memono,0,21,639,459,{r});
  380.             loop    ({
  381.                 footnote({終了計算中止},{b});
  382.                 waitx();
  383.                 case    (@xtype,
  384.                 101,{savememo;im({No})},201,{savememo;im({No})},
  385.                 102,{picknt;im({Yes})},202,{picknt;im({Yes})},
  386.                 103,{im({No})},    203,{im({No})},
  387.                     ,{im({Yes})}
  388.                     );
  389.                 });
  390.             case    (@mcheck==memono,
  391.                 {Yes},{mclose(3)},
  392.                 {No},{CloseAllMemo;mopen(memono);mclose(3)}
  393.                 );
  394.             });
  395.     setcdir(cdir)
  396.     };
  397. /*    ID検索処理    */
  398. %IDfile    {
  399.     <ID検索を可能にする為に>
  400.     ☆「会員名簿 (or 全員のプロフィールを見る)」を実行下さい。
  401.         この場合は、ID検索リストファイルが自動生成されます。
  402.  
  403.     <上記を実行したが、このコメントが出てしまう方へ>
  404.     ☆「ログファイルの設定」で存在していないファイルを
  405.         ID検索リストファイルに指定してませんか?
  406.     };
  407. /*    空文(改行コードのみの文字列)をカットする    */
  408. %CRCUT{[x] var y[20];
  409.         case    (x,
  410.             CRLF,{y:={}},
  411.             {},{y:={}},
  412.             ,{y:=@body(x,,{})}
  413.             );
  414.     im(y);
  415.     };
  416. %pickid    {
  417.     %m    @nolmemo(memono1);    /*メモの総行数を返す*/
  418.     %n    @xlinenum;        /*カーソル位置の行数を返す*/
  419.     %l1    @case    (n<1,
  420.             {Yes},{im(@memo(memono1,1,1))},
  421.             {No},
  422.             {case    (n>m,
  423.                 {Yes},{im(@memo(memono1,m,1))},
  424.                 {No},{im(@memo(memono1,n,1))}
  425.                 );
  426.             });
  427.     case    (@getchar(l1,1,2)={ID},
  428.         {Yes},    {im(@body(@body(l1,{:},{/}),{ },{ }))},
  429.         {No},    {im(@head(l1,{ }))}
  430.         );
  431.     };
  432. %pickhd{
  433.     %m    @nolmemo(memono1);
  434.     %n    @xlinenum;
  435.     %l1    @case    (n<1,
  436.             {Yes},{im(@memo(memono1,1,1))},
  437.             {No},
  438.             {case    (n>m,
  439.                 {Yes},{im(@memo(memono1,m,1))},
  440.                 {No},{im(@memo(memono1,n,1))}
  441.                 );
  442.             });
  443.     case    (@getchar(l1,1,2)={ID},
  444.         {Yes},    {im(@body(@body(l1,{:}),{ },{ }))},
  445.         {No},    {im(@getchar(l1,1,18))}
  446.         );
  447.     };
  448. %prSIDsrch{
  449.     case    (memono1>9,
  450.         {Yes},
  451.         {footnote({メモ番号が一杯のためメモを開けません});
  452.         wait(1);im({});
  453.         },
  454.         {No},
  455.         {CloseAllMemo;madd(memono1,{\n});mclear(memono1);
  456.         case    (@filechk(MEMBER),
  457.             {Yes},{mread(MEMBER,memono1)},
  458.             {No},{
  459.             case    (@filechk(LOG2|{PROFILE\member.lst}),
  460.             {Yes},{mread(LOG2|{PROFILE\member.lst},memono1)},
  461.             {No},{madd(memono1,IDfile)}
  462.                 );
  463.             }); 
  464.         });
  465.     };
  466. %IDsearch{
  467.     %memono1    @mlast+1;
  468.     prSIDsrch;mopen(memono1,0,241,639,459,{r});
  469.         footnote({検索中止},{b});
  470.         loop    ({
  471.             waitx();
  472.             case    (@xtype,
  473.                 101,{footnote({});im(@pickid)},
  474.                 201,{footnote({});im(@pickid)},
  475.                 102,{footnote({});im({})},
  476.                 202,{footnote({});im({})},
  477.                 memono1,{footnote({});im(@pickid)},
  478.                 ,{im({Yes})}
  479.                 );
  480.             });
  481.         case    (@mcheck==memono1,
  482.             {Yes},{mclose(3)},
  483.             {No},{CloseAllMemo;mopen(memono1);mclose(3)}
  484.             );
  485.     };
  486. %HDsearch{
  487.     %memono1    @mlast+1;
  488.     prSIDsrch;mopen(memono1,0,241,639,459,{r});
  489.         footnote({検索中止},{b});
  490.         loop    ({
  491.             waitx();
  492.             case    (@xtype,
  493.                 101,{footnote({});im(@CRCUT(@pickhd))},
  494.                 201,{footnote({});im(@CRCUT(@pickhd))},
  495.                 102,{footnote({});im({})},
  496.                 202,{footnote({});im({})},
  497.                 memono1,{footnote({});im(@CRCUT(@pickhd))},
  498.                 ,{im({Yes})}
  499.                 );
  500.             });
  501.         case    (@mcheck==memono1,
  502.             {Yes},{mclose(3)},
  503.             {No},{CloseAllMemo;mopen(memono1);mclose(3)}
  504.             );
  505.     };
  506. /*    初期設定    */
  507. %init    {
  508.     case(OAK={},{Yes},{setoak({J})},{No},{setoak(OAK)});
  509.     case(NATTOU={Yes}||NATTOU={No},{Yes},{nattou(NATTOU)});
  510.     case(CLICK={Yes}||CLICK={No},{Yes},{click(CLICK)});
  511.     case(R<>{}&&G<>{}&&B<>{},{Yes},{backclr(R,G,B)});
  512.     case(VBELL={Yes}||VBELL={No},{Yes},{visibell(VBELL)});
  513.     case(@tail(BELFIL,{.}),
  514.         {snd},{bellfile(BELFIL)},{SND},{bellfile(BELFIL)});
  515.     case(TAB<>{},{Yes},{tab(TAB)});
  516.     case(TEMP={},{Yes},{TEMP:=CDIR});
  517.     case(@nochar(TEMP)==3,{No},{TEMP2:=TEMP|{\}},{Yes},{TEMP2:=TEMP});
  518.     case(TEMP<>{}&&@setcdir2(TEMP)={No},{Yes},{mkdir2(TEMP)});
  519.     case(LOG={},{Yes},{LOG:=CDIR});
  520.     case(@nochar(LOG)==3,{No},{LOG2:=LOG|{\}},{Yes},{LOG2:=LOG});
  521.     case(LOG<>{}&&@setcdir2(LOG)={No},{Yes},{mkdir2(LOG)});
  522.     case(UP={},{Yes},{UP:=TEMP});
  523.     case(@nochar(UP)==3,{No},{UP2:=UP|{\}},{Yes},{UP2:=UP});
  524.     case(UP<>{}&&@setcdir2(UP)={No},{Yes},{mkdir2(UP)});
  525.     case(@nochar(SOUND)==3,
  526.         {No}, {SOUND2:=SOUND|{\}},{Yes},{SOUND2:=SOUND});
  527.     case(@nochar(RTTLdir)==3,
  528.         {No},{RTTL2:=RTTLdir|{\}},{Yes},{RTTL2:=RTTLdir});
  529.     };
  530. /*    指定されたファイルマネージャを起動する    */
  531. %FILEMGR{
  532.     case    (FMGR,
  533.         {},    {setcdir(CDIR);#DORAEDIT.PLP},
  534.         ,
  535.         {
  536.         %SFX    @tail(FMGR,{.});
  537.         case    (SFX={COM}||SFX={com}||
  538.              SFX={EXE}||SFX={exe}||
  539.              SFX={BAT}||SFX={bat},
  540.             {Yes},
  541.             {command(FMGR)}
  542.             );
  543.         case    (SFX={PLT}||SFX={plt}||
  544.              SFX={PLP}||SFX={plp},
  545.             {Yes},
  546.             {setcdir(@body(FMGR,,{\}));%fmgr @read(FMGR);fmgr}
  547.             );
  548.         });
  549.     };
  550. /************************************************************************/
  551. /*                      以下メインモジュール                            */
  552. /************************************************************************/
  553. /*    カレントディレクトリセット    */
  554. %CDIR    @getcdir;
  555. %CDIR2    @case    (@nochar(CDIR)==3,{Yes},{im(CDIR)},{No},{im(CDIR|{\})});
  556. /* オートパイロット停止時にPF10で再起動できるように */
  557. setpf(10,{footnote({DORA Loading ...});}|
  558.      {setcdir(}|@xc({7b})|CDIR|@xc({7d})|{);}|{#DORAMAIN.PLT});
  559.  
  560. /*    初期設定    */
  561. case    (@nochar(CDIR)==3,
  562.     {No}, {SETFILE:=CDIR|{\}|{DORASET.SET}},
  563.     {Yes},{SETFILE:=CDIR|{DORASET.SET}}
  564.     );
  565. case    (@filechk(SETFILE),
  566.     {Yes},{setcdir(CDIR);#DORASET.SET;SETFILE1:={標準設定}},
  567.     {No}, {setcdir(CDIR);#DORASET.PLP}
  568.     );
  569. init;
  570. CloseAllMemo;
  571. case    (@nochar(CDIR)==3,
  572.     {No}, {TGKFILE:=CDIR|{\}|{DORATGK.SET}},
  573.     {Yes},{TGKFILE:=CDIR|{DORATGK.SET}}
  574.     );
  575. case    (@filechk(TGKFILE),
  576.     {Yes},{setcdir(CDIR);#DORATGK.SET;SETFILE2:={標準設定}},
  577.     {No}, {setcdir(CDIR);#DORATGK.PLP}
  578.     );
  579. /*    オープニング画面表示    */
  580. case    (OPENING={No},
  581.     {No},{    case(@filechk(CDIR2|{DORAOP.COM}),
  582.             {Yes},{command({doraop.com }|HOSEI)}
  583.             ,{No},{})
  584.         },
  585.     {Yes},{    display({\n\n\n\n\n\n\n\n\n\n\n\n\n\n})
  586.         });
  587. /*    オープニングメッセージ    */
  588. footnote({DORA}|VerLev|{初期処理中});
  589. display(@xc({1B})|{[32m});
  590. display({\n    オートパイロットDORA}|VerLev|{を開始します\n});
  591. case(NETname={},
  592. {Yes},{display({    ☆}|NET|{-ネットでの処理を表示します。☆\n}|TGK)},
  593. {No},{display({    ☆}|NETname|{での処理を表示します。☆\n}|TGK)});
  594. footnote({ログファイルは}|LOG|{です。設定は}|NET|{-NETです});setcdir2(CDIR);
  595. display(@xc({1B})|{[37m});setcdir2(CDIR);
  596. loop    ({
  597.     SNDMSG    ({erande_f.snd});footnote({処理を選択してください});
  598.     setcdir(CDIR);
  599.     select  ({処理を選択してください <<DORA( FAPXもどき) >>},
  600.          Wtime4*10,{im({Yes})},
  601.         {      RTBBS-NETと通信を行う      },
  602.          {setcdir(CDIR);#DORAONLN.PLP;im({Yes})},
  603.         {      設定ファイルの読み込み      },
  604.         {setcdir(CDIR);#DORASCHG.PLP;im({Yes})},
  605.         {      各種の設定を行う         },
  606.         {setcdir(CDIR);#DORASET.PLP;init;im({Yes})},
  607.         {      RTBBS-NETでの処理の設定     },
  608.         {setcdir(CDIR);#DORATGK.PLP;im({Yes})},
  609.         {      伝言板(最後の一言)へのコメントを書く  },
  610.         {setcdir(CDIR);#DORAWRIT.PLP;im({Yes})},
  611.         {      電話料金を計算する  },
  612.         {RYOUKIN;im({Yes})},
  613.         {      受信ログを読む          },
  614.         {setcdir(CDIR);#DORAVIEW.PLP;im({Yes})},
  615.         {      受信ログを整理する(RTTLC.EXEを実行する) },
  616.         {setcdir(CDIR);#DORARTTL.PLP;im({Yes})},
  617.         {      ファイル操作          },
  618.         {FILEMGR;im({Yes})},
  619.         {      DORA}|VerLev|{の説明   },
  620.         {#DORAHELP.PLP;im({Yes})},
  621.         {      DORAを終了する        },
  622.          {im({No})})});
  623.  display(@xc({1B})|{[36m});
  624.  display({\nオートパイロットDORA}|VerLev|{を終了しました\n});
  625.  footnote({}); setcdir(CDIR);display(@xc({1B})|{[37m});